A Verifying Compiler for a Multi-threaded Object-Oriented Language

نویسندگان

  • K. Rustan M. Leino
  • Wolfram Schulte
چکیده

A verifying compiler automatically verifies the correctness of a source program before compiling it. Founded on the definition of the source language and a set of rules (a methodology) for using the language, the program’s correctness criteria and correctness argument are provided in the program text by interface specifications and invariants. This paper describes the program-verifier component of a verifying compiler for a core multi-threaded object-oriented language. The verifier takes as input a program written in the source language and generates, via a translation into an intermediate verification language, a set of verification conditions. The verification conditions are first-order logical formulas whose validity implies the correctness of the program. The formulas can be analyzed automatically by a satisfiabilitymodulo-theory (SMT) solver. The paper defines the source language and intermediate language, the translation from the former into the latter, and the generation of verification conditions from the latter. The paper also builds a methodology for writing and verifying singleand multi-threaded code with object invariants, and encodes the methodology into the intermediate-language program. The paper is intended as a student’s guide to understanding automatic program verification. It includes enough detailed information that students can build their own basic program verifier.

برای دانلود رایگان متن کامل این مقاله و بیش از 32 میلیون مقاله دیگر ابتدا ثبت نام کنید

ثبت نام

اگر عضو سایت هستید لطفا وارد حساب کاربری خود شوید

منابع مشابه

Generating Multi-Threaded code from Polychronous Specifications

SIGNAL, Lustre, Esterel, and a few other synchronous programming language compilers accomplish automated sequential code generation from synchronous specifications. In generating sequential code, the concurrency expressed in the synchronous programs is sequentialized mostly because such embedded software was designed to run on single-core processors. With the widespread advent of multi-core pro...

متن کامل

Compiling Multi-Threaded Object-Oriented Programs

A compiler must take special care when translating and transforming a multi-threaded program: The presence of synchronization operations and the potential of access conflicts have implications on register allocation and instruction scheduling. Moreover, a compiler might want to inhibit hardware assisted instruction reordering through memory fences, to enable a strong memory model on a platform ...

متن کامل

Verifying a compiler optimization for Multi-Threaded Java

The speciication for the object-oriented concurrent language Java 3] is rather loose w.r.t. the interaction of shared memory and the local working memories of diierent threads, in order to allow for diier-ent implementations. The Java speciication book describes two kinds of memories, a \normal" one and a more liberal memory, to which in certain situations a variable can be written even before ...

متن کامل

SECG: The SCOOP-to-Eiffel Code Generator

The Simple Concurrent Object-Oriented Programming (SCOOP) mechanism introduces inter-object concurrency to the Eiffel language, via addition of one new keyword, separate. We describe a general tool that takes a Eiffel program that uses the separate keyword and translates it into an Eiffel multi-threaded program that uses the Eiffel T HREAD class. The resulting code is thereafter compatible with...

متن کامل

Detecting Synchronization Defects in Multi-Threaded Object-Oriented Programs

This dissertation describes an efficient and automated approach to determine synchronization defects in multi-threaded object-oriented programs. The approach is based on the key observation that object-oriented programs provide guarantees about data confinement and encapsulation that can be leveraged by the design of a static analysis and a runtime checker. To be practical, the techniques are d...

متن کامل

ذخیره در منابع من


  با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید

عنوان ژورنال:

دوره   شماره 

صفحات  -

تاریخ انتشار 2007